#!/bin/sh

#android 在liunx编译 ffmpeg
# 1下载 gcc 编译库
wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip?hl=zh-cn
yum -y install unzip  git make
wget https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip

unzip unzip android-ndk-r17c-linux-x86_64.zip\?hl\=zh-cn
# 2 配置环境变量
#NDKROOT=/mnt/android-build/android-ndk-r17c
#export PATH=$NDKROOT:$PATH
#刷新 环境变量
 source /etc/profile
 #下载 FFmpeg 源代码
git clone https://gitee.com/mirrors/ffmpeg.git ffmpeg-4.0.2

 #!/bin/bash 
# 首先定义一个NDK目录的变量 NDK_ROOT 
NDK_ROOT=/root/Tools/android-ndk-r17c 
 
# 此变量执行ndk中的交叉编译gcc所在目录 
TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 
 
#从as的 externalNativeBuild/xxx/build.ninja， 反正下面的配置，可以压制警告的意思 
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi - D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack- protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp - mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -O0 - fPIC" 
 
INCLUDES=" -isystem $NDK_ROOT/sources/android/support/include"
 
# 1.定义编译后，所存放的目录 
PREFIX=./android/arm 
# 2.--enable-small 优化大小 非常重要，必须优化才行的哦 
# 3.--disable-programs 不编译ffmpeg程序（命令行工具），我们是需要获取静态、动态库 
# 4.--disable-avdevice 关闭avdevice模块，此模块在android中无用 
# 5.--disable-encoders 关闭所有编码器（播放不需要编码） 
# 6.--disable-muxers 关闭所有复用器（封装器），不需要生成mp4这样的文件，所有关闭 
# 7.--disable-filters 关闭所有滤镜 
# 8.--enable-cross-compile 开启交叉编译 
# 9.--cross-prefix 看右边的值就知道是干嘛的，gcc的前缀.. 
# 10.disable-shared / enable-static （代表关闭动态库，开启 静态库） 
 
# 11.--sysroot 
# 12.--extra-cflags 会传给gcc的参数 
# 13.--arch --target-os 
 
./configure \ 
--prefix=$PREFIX \ 
--enable-small \
 --disable-programs \ 
--disable-avdevice \ 
--disable-encoders \ 
--disable-muxers \ 
--disable-filters \ 
--enable-cross-compile \ 
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ 
--disable-shared \ 
--enable-static \ 
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \ 
--extra-cflags="$FLAGS $INCLUDES" \ 
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" \ 
--arch=arm \ 
--target-os=android 
make clean 
make install







//设置环境变量： gcc编译器
export $CC="/root/myNDKDir/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc" 
//ndk 根目录
NDK_ROOT="/root/myNDKDir/android-ndk-r16b"

$CC --sysroot=$NDK_ROOT/platforms/android-21/arch-arm/ -shared -o libffmpeg.so -Wl,--whole-archive libavcodec.a  libavfilter.a  libavformat.a  libavutil.a  libswresample.a  libswscale.a -Wl,--no-whole-archive














